package com.moliku.insurance.common.constant;

import lombok.Getter;
import org.apache.commons.lang3.StringUtils;

/**
 * 保险公司枚举常量
 *
 * @author Mr.Liu
 * @since 2021/2/5
 */
@Getter
public enum CompanyEnum {
    /**4\
     * 重庆人保
     */
    CQPICC("CQPICC", "重庆人保", "CqPiccService"),
    /**
     * 京东安联
     */
    ALLIANZ("ALLIANZ", "京东安联", "AllianzService"),
    /**
     * 利宝
     */
    LIBERTY("LIBERTY", "利宝", "LibertyService"),
    /**
     * 平安
     */
    PINGAN("PINGAN", "平安", "PingAnService"),
    /**
     * 史带中国
     */
    STARR("STARR", "史带中国", "StarrService"),
    /**
     * 五洲保险
     */
    CHINACIB("CHINACIB", "五洲保险", "ChinaCibService"),
    /**
     * 安盛保险
     */
    AXA("AXA", "安盛保险", "AxaService"),
    /**
     * 富德保险
     */
    FUNDE("FUNDE", "富德保险", "FundeService"),
    /**
     * 华安
     */
    SINOSAFE("SINOSAFE", "华安", "SinoSafeService"),
    /**
     * 华泰深分
     */
    HUATAI("HUATAI", "华泰深分", "HuaTaiService"),
    /**
     * 华泰上海
     */
    HUATAI_SH("HUATAI_SH", "华泰上海", "HuaTaiShService"),
    /**
     * 太平洋保险
     */
    CPIC("CPIC", "太平洋保险", "CpicService"),
    /**
     * 亚太财险
     */
    APIINS("APIINS", "亚太财险", "ApiInsService"),
    /**
     * 中意人寿
     */
    GENERALI("GENERALI", "中意人寿", "GeneraliService"),
    /**
     * 东海航运险
     */
    EAST_CHINA_SEA_SHIPPING("EASTSEA", "东海航运险", "EastSeaServiceImpl"),
    /**
     * 梧桐车险 
     */
    WTCAR("WTCAR", "梧桐车险", "WuTongService"),
    /**
     * 众安在线
     */
    ZAZX("ZAZX", "众安在线", "ZazxService"),
    /**
     * 美亚在线
     */
    MY("MYZX", "美亚在线", "MyzxService");

    /**
     * 公司编码
     */
    private final String code;
    /**
     * 公司名称
     */
    private final String name;
    /**
     * 业务处理类
     */
    private final String strategy;

    CompanyEnum(String code, String name, String strategy) {
        this.code = code;
        this.name = name;
        this.strategy = strategy;
    }

    /**
     * 获取指定公司业务处理实现类
     *
     * @param code 公司编码
     * @return 获取公司业务实现类
     */
    public static String getStrategy(String code) {
        String strategyComponent = "";
        if (StringUtils.isNotBlank(code)) {
            for (CompanyEnum companyEnum : CompanyEnum.values()) {
                if (companyEnum.code.equalsIgnoreCase(code)) {
                    strategyComponent = companyEnum.strategy;
                    break;
                }
            }
        }
        return strategyComponent;
    }

    /**
     * 获取保险公司名称
     *
     * @param code 公司编码
     * @return 公司名称
     */
    public static String getName(String code) {
        String name = "未匹配到保险公司";
        if (StringUtils.isNotBlank(code)) {
            for (CompanyEnum companyEnum : CompanyEnum.values()) {
                if (companyEnum.code.equalsIgnoreCase(code)) {
                    name = companyEnum.getName();
                    break;
                }
            }
        }
        return name;
    }
}
